package com.neuedu.corejava.ch4;

public class Array1 {

	public static void main(String[] args) {
		//数组：是一种数据结构，用于保存类型相同的一组数据，可以是基本数据类型或引用数据类型
        //定义：数据类型[] 变量名  或   数据类型 变量名[];
		//数组需要初始化后才能存放数据
		//设计一个数据结构，用于保存全班同学的orale成绩
		double[] scores = new double[50];//1、在定义时初始化
		scores[0] = 98; //保存数据到数组中
		String student[];
		student = new String[50];//定义后初始化
		
		//在定义是初始化数组，不指定长度，直接填充数据
		double[] scores2 = new double[] {98,97,96};
		//数组元素默认值
		//1、整型元素默认值0
		//2、浮点型元素默认值0.0f或0.0
		//3、char类型数组默认值\u0000
		//4、布尔型默认值false
		//5、其他类型默认值null
		
		//new关键字
		//在java语句中，可以使用new关键词实例化对象，在实例化过程中会进行内存空间的申请，申请后由jvm进行内存分配
		//对象申请内存后，才能保存数据
		//没有实例化的数组不能进行数组元素的访问，否则会抛出空指针异常
		
		
		
		//空指针异常：java.lang.NullPointerException
		//是一个运行时异常，引用一个没有初始化的NULL对象的属性或方法时发生的异常
		//发生此异常时，需检查对象是否初始化，即是否new关键词进行初始化
		
		//在程序运行过程中可能发生的错误，叫异常
		//这些错误是由于用户输入或逻辑错误产生的，一般可以通过代码进行修正
		 
		
		//数组元素的访问
		//数组是一个对象，含有length属性，可以用于获取数组长度
		/*for (int i = 0; i < scores2.length; i++) {
			System.out.print(scores2[i]);
		}
		int index = 0;
		while (index<scores2.length) {
			System.out.print(scores2[index]+"\t");			
		}*/
		
		//for each,可以遍历数组或集合
		/*for (double d : scores2) {
			System.out.print(scores2[index]+"\t");
		}*/
		
		
		//数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException
		//当进行数组元素访问时，访问数组的下标超出了数组的范围：0 ~ length-1
		//double d = scores2[scores2.length]; 错误，下标越界
		double d = scores2[scores2.length-1];
	}

}
